Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
a1ff18f
feat(ai-tools): draft/ai-tools workflow viewer
ValwareIRC May 14, 2026
ecb260f
feat(ai-tools): recursive badge renderer for structured step content
ValwareIRC May 14, 2026
5308c8d
feat(ai-tools): two-way deep link between card and final PRIVMSG
ValwareIRC May 14, 2026
02d9308
feat(ai-tools): workflow history button in chat header
ValwareIRC May 14, 2026
6b5d656
i18n(ai-tools): translate workflow history button + step count
ValwareIRC May 14, 2026
407316e
feat(ai-tools): consistent project-diagram icon, inline pill
ValwareIRC May 14, 2026
5a1a013
fix(ai-tools): float pill left so it sits inline with first line of body
ValwareIRC May 14, 2026
f0a7731
feat(ai-tools): card auto-dismiss countdown, header offset, auto-scroll
ValwareIRC May 14, 2026
9dd4fe5
fix(ai-tools): pill clickable + vertical connector between step dots
ValwareIRC May 14, 2026
188574f
feat(ai-tools): show prompt under bot nick on workflow card
ValwareIRC May 14, 2026
e3e20bf
feat(ai-tools): drop card auto-dismiss to 5s, fade across full window
ValwareIRC May 14, 2026
432817f
feat(ai-tools): show count badge next to workflow history icon
ValwareIRC May 14, 2026
9a40315
i18n(ai-tools): translate 'Workflow history ({0})' tooltip
ValwareIRC May 14, 2026
b57f2cf
feat(ai-tools): mute the inline workflow pill
ValwareIRC May 14, 2026
5b7662c
feat(ai-tools): redesign workflow surface as in-chat placeholder
ValwareIRC May 14, 2026
92331cb
fix(ai-tools): preserve reply context on morph + clean up stuck place…
ValwareIRC May 14, 2026
2adde50
fix(ai-tools): allow clicking inline pill to view historical workflows
ValwareIRC May 14, 2026
49a297b
feat(ai-tools): hang inline pill in avatar gutter instead of inline
ValwareIRC May 14, 2026
52e9dc4
feat(ai-tools): pair tool-call+result as one IN/OUT row, drop thinkin…
ValwareIRC May 15, 2026
2235432
feat(ai-tools): double the workflow card width
ValwareIRC May 15, 2026
69dc47e
fix(ai-tools): scroll workflow card body to bottom on open
ValwareIRC May 15, 2026
19c9597
fix(ai-tools): track scroll stickiness via onScroll, not post-update …
ValwareIRC May 15, 2026
a76ed4f
client: implement draft/bot-cmds discovery + +draft/bot-cmd invocation
ValwareIRC May 16, 2026
9f34253
client: auto-query bot slash commands on WHO completion
ValwareIRC May 16, 2026
be8a07b
client: surface PushBot commands in the slash autocomplete
ValwareIRC May 16, 2026
e49a94c
client: rich slash-cmd popover + per-arg hint footer
ValwareIRC May 16, 2026
9b312fb
client: show client + server commands in slash popover with badges
ValwareIRC May 16, 2026
f81cb89
client: obby.world/channel-bots cap + Bots management modal
ValwareIRC May 16, 2026
ff95511
client: rebuild BotsModal to match UserSettings layout + drop emoji i…
ValwareIRC May 16, 2026
a19dfd9
slash picker: show server-scope bots, prefer bot names over server cm…
ValwareIRC May 16, 2026
c3f9047
slash picker: multi-bot same-name + correct anchor + brand highlight
ValwareIRC May 16, 2026
ad537a3
slash picker: switch server-bot badge from purple to sky
ValwareIRC May 16, 2026
a7ca7f7
slash picker: open a typed param-form modal on select
ValwareIRC May 16, 2026
7b6aa8b
slash commands: reactive hint + invocation attribution on bot replies
ValwareIRC May 17, 2026
0a6c7d6
BotsModal: click commands to invoke; filter by reachability
ValwareIRC May 17, 2026
6179cf3
Merge branch 'draft-ai-tools' into feat/bot-tools-spec
ValwareIRC May 24, 2026
9546ee9
bot-tools/bot-cmds: rework client to the draft/ IRCv3 Bot Tools spec
ValwareIRC May 24, 2026
0f162e9
bot-cmds: never route a private command publicly (privacy)
ValwareIRC May 24, 2026
713b356
irc/connection: surface ERROR + rateLimited as global notifications
ValwareIRC May 30, 2026
9106f61
ircclient: surface transport-level connect failures via serverError
ValwareIRC May 30, 2026
fc50a0f
desktop: surface connect failures via timeouts + a raw-log viewer
ValwareIRC May 30, 2026
2c0cf1a
desktop: fix port-double in AddServerModal + wrong IRC defaults in pa…
ValwareIRC May 30, 2026
ffbddb3
Merge branch 'main' into feat/bot-tools-spec
ValwareIRC Jun 4, 2026
20de3c8
bot-tools: address CodeRabbit findings on PR #238
ValwareIRC Jun 4, 2026
ea1d6b6
chore(tauri/unifiedpush): drop committed Gradle build outputs + Cargo…
ValwareIRC Jun 5, 2026
0ab49cb
bot-tools: address matt's review on PR #238
ValwareIRC Jun 5, 2026
049a66d
chore(tauri): drop the unifiedpush plugin from this branch entirely
ValwareIRC Jun 5, 2026
40d3fd2
Merge branch 'main' into feat/bot-tools-spec
ValwareIRC Jun 5, 2026
4b23819
bot-tools: i18n SlashParamHint literals + fi 'offline'
ValwareIRC Jun 5, 2026
881a0a1
bot-tools: spec-compliant draft/bot-cmds batch reassembly + invoked-b…
ValwareIRC Jun 10, 2026
a5acae6
bot-tools: carry sender on BATCH_START so draft/bot-cmds chunks key b…
ValwareIRC Jun 10, 2026
07ad36f
bot-tools: console.log BATCH start/end + decode result for live debug…
ValwareIRC Jun 10, 2026
a8ed9d5
bot-tools: synthesise PushBotInfo so draft/bot-cmds bots show in modal
ValwareIRC Jun 10, 2026
984a8ea
bot-tools: surface draft/bot-cmds-loading bots in header + modal
ValwareIRC Jun 10, 2026
2d3291e
bot-tools: visible loading dot on inline bot button, channel-scope sy…
ValwareIRC Jun 10, 2026
c535e4c
bot-tools: portal modal to root + synthesise placeholder bot on BATCH…
ValwareIRC Jun 10, 2026
03455bb
bot-tools: render BotInvocationChip on ACTION (/me) bot replies too
ValwareIRC Jun 10, 2026
60c0894
bot-tools: address mattf's PR #238 review — close 3 security/UX holes
ValwareIRC Jun 10, 2026
2a85266
bot-tools: filter privileged command names from non-config bots + inf…
ValwareIRC Jun 11, 2026
c9cf231
bot-tools: chathistory spam fix + JOIN discovery + Bot Commands submenu
ValwareIRC Jun 11, 2026
8383d81
bot-tools: move Bot Commands list into the member-list context-menu s…
ValwareIRC Jun 11, 2026
f50e7b2
bot-tools: portal the Bot Commands submenu so the parent menu's overf…
ValwareIRC Jun 11, 2026
df8c328
UserContextMenu: solid sticky header on Bot Commands submenu, neutral…
ValwareIRC Jun 11, 2026
b135d4c
UserContextMenu: drop top padding on Bot Commands submenu so sticky h…
ValwareIRC Jun 11, 2026
6297714
bot-tools: shared LoadingSpinner + 'Commands are loading…' empty-state
ValwareIRC Jun 11, 2026
fdd77c5
bot-tools: drop auto-pop tray, accumulating tool pills, two-tier hist…
ValwareIRC Jun 11, 2026
23a1e0a
bot-tools: 10-min timeout, always-on close, wrapping pills with k=v p…
ValwareIRC Jun 11, 2026
12def03
BotToolsPlaceholderBody: drop array-index key in param-pair list
ValwareIRC Jun 11, 2026
e0d42f5
Merge remote-tracking branch 'origin/main' into feat/bot-tools-spec
ValwareIRC Jun 11, 2026
ab35414
i18n: re-extract + compile after main merge
ValwareIRC Jun 11, 2026
d0c3b85
i18n: wrap residual user-visible strings + restructure module-scope b…
ValwareIRC Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4,585 changes: 4,585 additions & 0 deletions src-tauri/plugins/unifiedpush/Cargo.lock

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.obsidianirc.unifiedpush" >

<uses-sdk android:minSdkVersion="24" />

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<application>

<!--
UnifiedPush connector 3.x delivers endpoint + decrypted
messages to this Service (action PUSH_EVENT). It runs even
when the app's WebView is gone, so notifications are shown
natively here.
-->
<service
android:name="com.obsidianirc.unifiedpush.PushServiceImpl"
android:exported="false" >
<intent-filter>
<action android:name="org.unifiedpush.android.connector.PUSH_EVENT" />
</intent-filter>
</service>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": 3,
"artifactType": {
"type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
"kind": "Directory"
},
"applicationId": "com.obsidianirc.unifiedpush",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"outputFile": "AndroidManifest.xml"
}
],
"elementType": "File"
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
aarFormatVersion=1.0
aarMetadataVersion=1.0
minCompileSdk=1
minCompileSdkExtension=0
minAndroidGradlePluginVersion=1.0.0
coreLibraryDesugaringEnabled=false
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# UnifiedPush plugin ProGuard rules (consumer).
-keep class org.unifiedpush.android.connector.** { *; }
-keep class com.obsidianirc.unifiedpush.** { *; }
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
#
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
# will be ignored by new version of the Android plugin for Gradle.

# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file
# instead of this one, which turns off the optimization flags.
-allowaccessmodification

# Preserve some attributes that may be required for reflection.
-keepattributes AnnotationDefault,
EnclosingMethod,
InnerClasses,
RuntimeVisibleAnnotations,
RuntimeVisibleParameterAnnotations,
RuntimeVisibleTypeAnnotations,
Signature

-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keep public class com.google.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
-dontnote com.google.vending.licensing.ILicensingService
-dontnote com.google.android.vending.licensing.ILicensingService

# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}

# Keep setters in Views so that animations can still work.
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}

# Preserve annotated Javascript interface methods.
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}

# The support libraries contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontnote android.support.**
-dontnote androidx.**
-dontwarn android.support.**
-dontwarn androidx.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}

# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
-dontnote org.apache.http.**
-dontnote android.net.http.**

# These classes are duplicated between android.jar and core-lambda-stubs.jar.
-dontnote java.lang.invoke.**
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
#
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
# will be ignored by new version of the Android plugin for Gradle.

# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize steps (and performs some
# of these optimizations on its own).
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.
-dontoptimize

# Preserve some attributes that may be required for reflection.
-keepattributes AnnotationDefault,
EnclosingMethod,
InnerClasses,
RuntimeVisibleAnnotations,
RuntimeVisibleParameterAnnotations,
RuntimeVisibleTypeAnnotations,
Signature

-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keep public class com.google.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
-dontnote com.google.vending.licensing.ILicensingService
-dontnote com.google.android.vending.licensing.ILicensingService

# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}

# Keep setters in Views so that animations can still work.
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}

# Preserve annotated Javascript interface methods.
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}

# The support libraries contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontnote android.support.**
-dontnote androidx.**
-dontwarn android.support.**
-dontwarn androidx.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}

# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
-dontnote org.apache.http.**
-dontnote android.net.http.**

# These classes are duplicated between android.jar and core-lambda-stubs.jar.
-dontnote java.lang.invoke.**
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
#
# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with
# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and
# will be ignored by new version of the Android plugin for Gradle.

# Optimizations can be turned on and off in the 'postProcessing' DSL block.
# The configuration below is applied if optimizations are enabled.
-allowaccessmodification

# Preserve some attributes that may be required for reflection.
-keepattributes AnnotationDefault,
EnclosingMethod,
InnerClasses,
RuntimeVisibleAnnotations,
RuntimeVisibleParameterAnnotations,
RuntimeVisibleTypeAnnotations,
Signature

-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keep public class com.google.android.vending.licensing.ILicensingService
-dontnote com.android.vending.licensing.ILicensingService
-dontnote com.google.vending.licensing.ILicensingService
-dontnote com.google.android.vending.licensing.ILicensingService

# For native methods, see https://www.guardsquare.com/manual/configuration/examples#native
-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}

# Keep setters in Views so that animations can still work.
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}

# We want to keep methods in Activity that could be used in the XML attribute onClick.
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

# For enumeration classes, see https://www.guardsquare.com/manual/configuration/examples#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
public static final ** CREATOR;
}

# Preserve annotated Javascript interface methods.
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}

# The support libraries contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
-dontnote android.support.**
-dontnote androidx.**
-dontwarn android.support.**
-dontwarn androidx.**

# Understand the @Keep support annotation.
-keep class android.support.annotation.Keep

-keep @android.support.annotation.Keep class * {*;}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}

# These classes are duplicated between android.jar and org.apache.http.legacy.jar.
-dontnote org.apache.http.**
-dontnote android.net.http.**

# These classes are duplicated between android.jar and core-lambda-stubs.jar.
-dontnote java.lang.invoke.**
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<lint-module
format="1"
dir="/home/valerie/obbyircd/ObsidianIRC/src-tauri/plugins/unifiedpush/android"
name=":tauri-plugin-unifiedpush"
type="LIBRARY"
maven="android:tauri-plugin-unifiedpush:unspecified"
agpVersion="8.5.1"
buildFolder="build"
bootClassPath="/home/valerie/Android/Sdk/platforms/android-36/android.jar:/home/valerie/Android/Sdk/build-tools/34.0.0/core-lambda-stubs.jar"
javaSourceLevel="1.8"
compileTarget="android-36"
neverShrinking="true">
<lintOptions
abortOnError="true"
absolutePaths="true"
checkReleaseBuilds="true"
explainIssues="true"/>
<variant name="release"/>
</lint-module>
Loading
Loading